package com.hengpeng.itfin.service.investinfo;

import com.hengpeng.common.exception.ServiceResult;
import com.hengpeng.itfinbase.en.InvestStatus;
import com.hengpeng.itfinbase.message.ResponseMessage;
import com.hengpeng.itfinbase.message.partner.InvestInfoRequestMsg;
import com.hengpeng.itfinbase.message.partner.InvestInfoResponseMsg;
import com.hengpeng.itfinbase.persist.InvestInfo;

/**
 * <pre>
 * 投资服务类
 * </pre>
 * 
 * @author weiyuan
 * @version 1.0, 2015年6月2日
 */
public interface InvestInfoService {
    /**
     * <pre>
     * 处理投资结果
     * </pre>
     * 
     * @param response
     */
    public ServiceResult<String> dealInvestResult(InvestInfoResponseMsg response);

    /**
     * <pre>
     * 获取投资信息
     * </pre>
     * 
     * @param trxid
     * @return
     */
    public InvestInfo getInvestByUnFreeOrderId(String unFreeOrderId, boolean isLock);

    /**
     * <pre>
     * 投标查询操作
     * </pre>
     */
    public void investQuery();

    /**
     * <pre>
     * 投标查询操作
     * </pre>
     * 
     * @param investInfos
     */
    public void doInvestQuery(InvestInfo investInfos);

    /**
     * <pre>
     * 投标请求前动作
     * </pre>
     * 
     * @param reqMsg
     */
    public ResponseMessage packInvestRequest(InvestInfoRequestMsg reqMsg);

    /**
     * 更新投标计划状态
     * 
     * @param borrowInfoId
     * @param oldStatus
     * @param newStatus
     * @return
     */
    public int updateAllInvestInfoStatus(Long borrowInfoId, InvestStatus oldStatus, InvestStatus newStatus);

    /**
     * 更新状态
     * 
     * @param investInfoId
     * @param oldStatus
     * @param newStatus
     * @return
     */
    public int updateStatus(Long investInfoId, InvestStatus oldStatus, InvestStatus newStatus);

    /**
     * 更新，冻结订单号
     * 
     * @param id
     * @param freeOrderId
     * @param oldStatus
     * @param newStatus
     * @return
     */
    public int updateStatusAndFreeId(Long id, String freeOrderId, InvestStatus oldStatus, InvestStatus newStatus);

    /**
     * 更新募集金额
     * 
     * @param id
     * @param money
     * @return
     */
    public int updateRaiseMoney(Long id, Long money);
}
